diff --git a/index.php b/index.php
index 3040ef0..a38ea99 100755
--- a/index.php
+++ b/index.php
@@ -196,6 +196,18 @@
 	}
 
 /*
+ *---------------------------------------------------------------
+ * WORKING DIRECTORY FOR SHUTDOWN HANDLER
+ *---------------------------------------------------------------
+ *
+ * CI assumes the directory containing index.php, while shutdown
+ * handlers execute in process's initial working directory. To make
+ * logging work, we need to change directory in the shutdown handler.
+ * 
+ */
+	define('CIPATH', getcwd());
+
+/*
  * -------------------------------------------------------------------
  *  Now that we know the path, set the main path constants
  * -------------------------------------------------------------------
diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index c962fda..67c94cf 100644
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -73,6 +73,7 @@
  * ------------------------------------------------------
  */
 	set_error_handler('_exception_handler');
+	register_shutdown_function('_shutdown_handler');
 
 	if ( ! is_php('5.4'))
 	{
diff --git a/system/core/Common.php b/system/core/Common.php
index 7f296b1..0353a9d 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -577,6 +577,35 @@
 	}
 }
 
+// ------------------------------------------------------------------------
+
+if ( ! function_exists('_shutdown_handler'))
+{
+	/**
+	 * Shutdown Handler
+	 *
+	 * This is the shutdown handler that is declared at the top
+	 * of CodeIgniter.php. The main reason we use this is to simulate
+	 * a complete custom exception handler.
+	 *
+	 * E_STRICT is purposivly neglected because such events may have 
+	 * been caught. Duplication or none? None is preferred for now.
+	 *
+	 * @link	http://insomanic.me.uk/post/229851073/php-trick-catching-fatal-errors-e-error-with-a
+	 * @return	void
+	 */
+	function _shutdown_handler()
+	{
+		$last_error = function_exists('error_get_last') ? error_get_last() : NULL;
+		if (isset($last_error) &&
+			($last_error['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING)))
+		{
+			chdir(CIPATH);
+			_exception_handler($last_error['type'], $last_error['message'], $last_error['file'], $last_error['line']);
+		}
+	}
+}
+
 // --------------------------------------------------------------------
 
 if ( ! function_exists('remove_invisible_characters'))
